Python3最新版対応 Tkinterのまとめ #Python |
您所在的位置:网站首页 › tkinter has no attribute label › Python3最新版対応 Tkinterのまとめ #Python |
こんにちは
最近PythonでUIを作ってみようと思ったのですが、画面上にウィンドウなどを表示させるためのモジュールである"Tkinter"についてのネット情報が動作しないものが(バージョンやハードの関係で)一部あったりしたので、 私なりに最新版に対応している情報をまあまあ詳しくまとめてみました。 あと、私がつまずいた注意ポイントなども載せているので、参考になると幸いです。 動作環境2023年3月5日現在 Mac Book Pro M1 Max Mac OS Ventura 13.2.1 Visual Studio Code 1.76.0 Python 3.11.1 Tkinterの基本文 test.py import sys import tkinter root = tkinter.Tk() #他のコードはここに記載 root.mainloop()実行するとこんな感じ。小さなTkというウィンドウが表示されます。
ちなみに、pyファイルの名前をtkinter.pyにするとエラーが出ます。 tkinterを使うからといってtkinter.pyにするとえらい目に遭いましたww (このようなエラー内容です。) tkinter.py AttributeError: partially initialized module 'tkinter' has no attribute 'Tk' (most likely due to a circular import) ウィンドウタイトルウィンドウの上についていた文字を変えるには基本文に加えて、このようにかきます。 root.title("ウィンドウのタイトル")実行するとこんな感じに、ウィンドウタイトルが変わっています。
勿論、ダブルクォーテーション(")の中の文字を変えるとタイトルが変わります。 プログラム全文 window_title.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.mainloop() ウィンドウサイズウィンドウのデフォルトサイズを変えるには、基本文に加えて、このようにかきます。 root.geometry("横x縦")試しに500x700のウィンドウを作ると、このように縦に長いウィンドウができます。
プログラム全文 window_size.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x700") root.mainloop() タイトルバーを隠すタイトルバーは、ウィンドウにあるこういうやつなんですけど、これをTkinterで隠す方法があるので紹介します。
実行結果。ダークモードは気にしないでいただきたい。
最大化の無効化は意外と役に立ちます。 タイトルバーを無効化するのと同じところに、このように記載します。 root.resizable(0, 0)実行結果。最大化が押せなくなっています。
#Tkinterの要素 ここからがメインです。Tkinterでは主にGUIを作るための要素が用意されています。 ##ラベル ラベルとは、普通でいうテキストのことです。 文字をウィンドウ上に表示します。 ちなみにプログラムは基本文の「#他のコードはここに記載」の下に追加していきます。(上でもよい) label = tkinter.Label(text='ラベルの文字') label.pack()実行するとこんな感じ。
プログラム全文 tk_label.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x400") label = tkinter.Label(text='ラベルの文字') label.pack() root.mainloop()文字を変えるにはシングルクォーテーションの中を書き換えます。 label = tkinter.Label(text='ラベルの文字')のlabelは変数なので別の文字列も指定できます。(他のところlabel.pack()なども適用する必要あり。) また、label.packでは位置を自動的に合わせてくれるという感じです。 文字の装飾文字色を変えたり、文字サイズを変えたりするには、基本的にlabel = tkinter.Label(text='ラベルの文字')のカッコの中にコンマで区切って付け足していきます。 文字色背景色は先述したところにforeground='#ff0000'を付け足します。 (下のサンプルはその行を丸ごと置き換えています。) label = tkinter.Label(text='ラベルの文字', foreground='#ff0000')#ff0000の部分はHTMLカラーコードを使って、設定できます。 原色大辞典 - HTMLカラーコード 実行結果
文字の背景色も文字色と同じところにコンマで区切って、background='HTMLカラーコード'を付け足します。 label = tkinter.Label(text='ラベルの文字', background='#ffff00')実行結果
フォント、文字サイズ、太さを設定する場合は同じようにコンマ区切りでfont=("フォント", "文字サイズ", "太さ")のようにします。 注意 カッコやダブルクォーテーションを忘れないように注意してください。 label = tkinter.Label(text='ラベルの文字', background='#ffff00', font=("MSゴシック", "20", "bold"))実行結果
プログラム全文 label_font.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x400") label = tkinter.Label(text='ラベルの文字', background='#ffff00', font=("MSゴシック", "20", "bold")) label.pack() root.mainloop()##文字の位置 文字の位置はlabel.pack()を潰して、このように記載します。 label.place(x=150, y=200)実行結果。このように移動しているのがわかります。
label.place(x=x座標, y=y座標)という感じで、位置を変えれます。 placeは他のTkinter要素でも使えるので、覚えておくといいです。 ボタンボタンはアプリケーションでもよく使われる要素の一つです。 Tkinterではbutton = tkinter.Button(text='ボタン')でボタンを作ることができます。 勿論、.pack()はボタンでも機能します。 Button = tkinter.Button(text='ボタン') Button.pack()実行結果
基本的なことはラベルと同じです。
button = tkinter.Button(text='ボタン')のシングルクォーテーション内の文字列を変えることでボタンの文字列も変わります。
また、placeもボタンではラベルと同じように、文の最初の変数名を変えるだけで機能するので、説明は省略します。
一応実行画面
ラベルと同じようにカッコ内にコンマ区切りでforeground="HTMLカラーコード"を追加します。
文字色と同じところにwidth=長さを追加します。
実行結果
処理はdefを用いて新しく関数を作ります。 button.bind("",関数名)で処理を関数に飛ばしてる感じです。 は左クリックという意味です。 に変えると右クリックで反応するようになります。 入力ボックス入力ボックスはEntryを使います。 新しく変数を指定します。 boxa = tkinter.Entry() boxa.pack()実行結果
プログラム全文 textbox.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x400") boxa = tkinter.Entry() boxa.pack() root.mainloop() オプション 入力ボックスの長さEntry() のカッコ内にwidth=長さを入れます。 boxa = tkinter.Entry(width=100)実行結果
Entryに入力された情報を変数に入れて、取得することができます。 取得する変数 = 取得するEntryの名前.get()を追加します。 先ほどのサンプルコードに当てはめるとこんな感じです。 input_ = boxa.get()プログラム全文 box_get.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x400") boxa = tkinter.Entry(width=100) boxa.pack() input_ = boxa.get() root.mainloop()取得した内容をprint(input_)などで出力してみると確認することができます。 入力ボックスの中身を削除する普通にやるとわかりづらいので、先ほどのボタンを活用して、ボタンを押すと中身が消えるという感じにしていきます。 新規にボタンと関数を作り、関数内にboxa.delete(0, tkinter.END)を追加します。 実行結果。写真なので伝わらないかもですが、ボタンを押すと入力した文字が消えます。
プログラム全文 box_del.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x400") def click(event): boxa.delete(0, tkinter.END) boxa = tkinter.Entry(width=100) boxa.pack() button = tkinter.Button(text="削除") button.pack() button.bind("",click) root.mainloop() デフォルトで文字を入力しておく方法先に実行結果
プログラム全文 textbox_insert.py import sys import tkinter root = tkinter.Tk() root.title("ウィンドウのタイトル") root.geometry("500x400") def click(event): boxa.delete(0, tkinter.END) boxa = tkinter.Entry(width=100) boxa.insert(tkinter.END,"事前に入力しておく文字列") boxa.pack() root.mainloop() 終わりに今回はTkinterについてまとめました。 質問などあれば、コメントに書いていただければ、出来る範囲で回答しようと思っているのでよろしくお願いしま |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |